package com.aaa.factorymode.demo03;

/**
 * @author C-Q
 * @version 1.1.0
 * @Description: > 开闭原则: 允许增加新的类，不允许修改原来类的代码。
 * ==工厂方法模式将工厂抽象化，并定义一个创建对象的接口。每增加新产品，
 * 只需增加该产品以及对应的具体实现工厂类，由具体工厂类决定要实例化的产品是哪个，
 * 将对象的创建与实例化延迟到子类，这样工厂的设计就符合“开闭原则”了，
 * 扩展时不必去修改原来的代码==。在使用时，用于只需知道产品对应的具体工厂，
 * 关注具体的创建过程，甚至不需要知道具体产品类的类名，当我们选择哪个具体工厂时，
 * 就已经决定了实际创建的产品是哪个了。
 *
 * 但缺点在于，每增加一个产品都需要增加一个具体产品类和实现工厂类，
 * 使得系统中类的个数成倍增加，在一定程度上增加了系统的复杂度，同时也增加了系统具体类的依赖。
 * @date 2022/11/8
 */
public class Test {
    //客户类
    public static void main(String[] args) {
        FactoryAsus8080 factoryAsus8080 = new FactoryAsus8080();
        Asus asus8080 = factoryAsus8080.createAsus();

        FactoryAsus8085 factoryAsus8085 = new FactoryAsus8085();
        Asus asus8085 = factoryAsus8085.createAsus();

    }
}
    /*总结：
        工厂模式：把创建对象和使用对象进行分离，使用户无需关注对象创建的细节
        分为三类：简单工厂模式 工厂方法模式 抽象工厂模式；

    spring中提供LOC控制反转：他就使用了反射+工厂模式。*/
